A list which is built using a non-strict constructor. Any
head or tail of the list may be an unevaluated closure. Also
known as streams since they may be used to carry a sequence of
values from the output of one function to an input of another.
See also Lazy evaluation.